
// <copyright file="IDbColumnMetadata.cs" company="Subhadra Software Solutions">
//   
// </copyright>
// <summary>
//   The DbColumnMetadata interface.
// </summary>

namespace SubhadraSolutions.Sharp.Utils.Data.Dynamic
{
    using System.Data;
    using System.Reflection;

    /// <summary>
    /// The DbColumnMetadata interface.
    /// </summary>
    public interface IDbColumnMetadata
    {
        #region Public Properties

        /// <summary>
        /// Gets the access type.
        /// </summary>
        DbColumnAccessTypes AccessType { get; }

        /// <summary>
        /// Gets the column db type.
        /// </summary>
        DbType ColumnDbType { get; }

        /// <summary>
        /// Gets the column name.
        /// </summary>
        string ColumnName { get; }

        /// <summary>
        /// Gets the false value text.
        /// </summary>
        string FalseValueText { get; }

        /// <summary>
        /// Gets a value indicating whether is key.
        /// </summary>
        bool IsKey { get; }

        /// <summary>
        /// Gets the max length.
        /// </summary>
        int? MaxLength { get; }

        /// <summary>
        /// Gets a value indicating whether null-able.
        /// </summary>
        bool IsNullable { get; }

        /// <summary>
        /// Gets the property.
        /// </summary>
        PropertyInfo Property { get; }

        /// <summary>
        /// Gets the true value text.
        /// </summary>
        string TrueValueText { get; }

        #endregion Public Properties
    }
}